package com.future;

import java.util.Arrays;

/**
 * Description:
 * 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
 * <p>
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "Hello World"
 * 输出：5
 * 示例 2：
 * <p>
 * 输入：s = "   fly me   to   the moon  "
 * 输出：4
 * 示例 3：
 * <p>
 * 输入：s = "luffy is still joyboy"
 * 输出：6
 * <p>
 * 提示：
 * <p>
 * 1 <= s.length <= 104
 * s 仅有英文字母和空格 ' ' 组成
 * s 中至少存在一个单词
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/length-of-last-word
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author weiruibai.vendor
 * Date: 2021/9/30 15:10
 */
public class Solution_lengthOfLastWord_58 {

    public static void main(String[] args) {
        String s = "Hello World";
        s = "   fly me   to   the moon  ";
        //s = "ABC";
        s = "luffy is still joyboy";
        System.out.println(lengthOfLastWord_1(s));
    }

    public static int lengthOfLastWord(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        s = s.trim();
        if (s.length() == 0) {
            return 0;
        }
        String[] split = s.split("\\s+");
        System.out.println("最后一个单词：" + split[split.length - 1]);
        return split[split.length - 1].length();
    }

    /**
     * 1、只记录最后一个单词的首个起点
     * 2、调用String.substring(index) 拿到最后的字符串
     * 3、去掉头尾空格返回长度
     *
     * @param s
     * @return
     */
    public static int lengthOfLastWord_1(String s) {
        if (s == null || s.trim().length() == 0) {
            return 0;
        }
        int st = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if ((i == 0 || s.charAt(i - 1) == ' ') && s.charAt(i) != ' ') {
                st = i;
            }

        }
        System.out.println("最后一个单词：" + s.substring(st).trim());
        return s.substring(st).trim().length();
    }
}
